深入理解TransaationTemplate编程式事务
深入理解TransaationTemplate编程式事务TransactionTemplate的编程式事务管理是使用模板方法设计模式对原始事务管理方式的封装。 一、TransaationTemplate 源码分析点开源码看后发现他的核心是execute,如下 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768public class TransactionTemplate extends DefaultTransactionDefinition implements TransactionOperations, InitializingBean { @Override @Nullable public <T> T execute(TransactionCallback<T> action) throws...
nginx安装
nginx安装1 安装nginx1234567891011121314# 进入到home文件夹cd /home# 安装必要的依赖yum install gcc pcre-devel zlib-devel openssl-devel# 下载nginxwget https://nginx.org/download/nginx-1.24.0.tar.gz# 解压tar -zxvf nginx-1.24.0.tar.gz # 进入目录cd /home/nginx-1.24.0# 配置安装目录./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module# 进行安装make && make install 2 将nginx配置为系统服务12345678910111213141516171819202122232425# 新建文件 /usr/lib/systemd/system/nginx.servicevim...
java对接企业微信授权
java对接企业微信授权一、需求从企业微信那边登录,获取到当前企业微信登录的用户ID。 二、思路先去看官方文档 https://work.weixin.qq.com/api/doc/90000/90135/90664 , 在这里总结一下。 获取到企业微信的企业ID、应用ID、应用凭证 访问获取code链接 获取access_token 获取用户信息 三、实现3.1 获取企业微信的企业ID、应用ID、应用凭证企业ID如下 应用ID、和凭证 需要创建一个应用,如果以前有可以直接用以前的。 3.2 访问获取code链接https://open.work.weixin.qq.com/api/doc/90000/90135/91022 官方文档 code...
shadowsocks代理(vpn)
shadowsocks代理(vpn)shadowsocks中文名为影梭,是一个有名的加密socks5代理。 官网称:A secure socks5 proxy, designed to protect your Internet traffic. 目前官方客户端支持Windows、Mac OS X、Linux、Android、ios、OpenWRT。 官方服务端支持Python语言、Go语言、C with libev、C++ with Qt。 官方提供了各种版本的安装包方便部署:pip包(Python)、npm包(nodejs)、aur包(Arch Linux)、freshports包(FreeBSD) Nodejs是基于Javascript实现的一款后台程序开发平台,所以在windows下也能够很方便的安装npm包 一、nodejs安装下载node.js百度下载就行 安装shadowsocks打开Windows PowerShell,输入以下命令安装shadowsocks 1npm install -g shadowsocks 进入NodeJS安装目录...
对全世界抱以温柔
...
多线程(三) volatile和atomic和ThreadLocal
多线程(三) volatile和atomic和ThreadLocal一、Volatilevolatile 关键字的作用是使变量在多个线程之间可见。 详细了解的话需要对Java的内存模型有所认知,这里推荐一篇博客 http://linyishui.top/2019051701.html?highlight=%E5%86%85%E5%AD%98%E6%A8%A1%E5%9E%8B volalite关键字虽然拥有多个线程之间的可见性,但是不具备同步性(也就是原子性),可以算是一个轻量级的synchronlized ,性能要比synchronized...
多线程(一) 基础
多线程(一) 基础一、定义程序:是为完成特定任务,用某种语言编写的一组指令的集合,即指一段静态代码,对象。 进程:是程序执行一次的过程,正在运行的一个程序。动态过程:有他自身产生,存在,消亡的过程 线程:程序内部的一条执行入径。 二、优点背景:只使用单个线程完成多个任务(调用多个方法),肯定比用多个线程来完成用的时间更短,为何仍需多线程呢? 优点: 提高应用程序的响应。对图形化界面更有意义,可增强用户体验。 提高计算机系统CPU的利用率 改善程序结构。将既长又复杂的进程分为多个线程,独立运行,利于理解和修改 三、线程的创建方式3.1 继承Thread重写run()方法12345class A extends Thread{ @Override public void run(){ }} 3.2 实现Runnable接口的run方法,推荐不影响类的继承。因为类是单继承的。 针对于有共享数据的操作,更适合使用Runnable的方式。换句话说,实现Runnable接口的方式,实现了代码和数据的分离。 java8...
多线程(二) 线程同步
多线程(二) 线程同步一、多线程临界资源的问题。数据不一致问题又是卖票这个例子,以及多线程下的懒汉式单例模式 12345678910111213141516171819202122232425262728293031323334353637/** * @author xia17 * @date 2020/1/2 21:26 */public class SellToken { public static void main(String[] args) { Thread t1 = new Thread(TokenBox::sell, "线程1"); Thread t2 = new Thread(TokenBox::sell, "线程2"); Thread t3 = new Thread(TokenBox::sell, "线程3"); Thread t4 = new Thread(TokenBox::sell,...
我们都在阴沟里,但仍有人仰望星空
我们都在阴沟里,但仍有人仰望星空今天看完《少年的你》,内心挺多感触的,剧中有句话我印象特别深。那就是陈念问小北为什么不读书了,小北随意翻着书说到,读书没用,对你有用。陈念很快就辩驳说有用,此时小北翻到一页,上面有陈念写着的一句话:我们生活在阴沟里,但有人依然仰望星空。小北看到这句话停了一会儿,说道:“你太干净了,你不懂。” 这句原话是出自《温德密尔夫人的扇子》第三幕,我们都在阴沟里,但仍有人仰望星空。这世间有很多人遭遇着各种不幸,有人自以为看清现实不在奢望未来,但是仍有人心怀希望。生活条件很差就像在肮脏的水沟里,但还有人不忘仰望星空,看向美好的未来,愿意为了美好的未来,在阴沟里拼尽全力,希望有天能逃离这里,奔向诗与远方。 说起阴沟,我又想到了《肖生克的救赎》中安迪在逃离监狱的那一晚。安迪在我们难以想象有多臭的下水道中...
jpa主键生成策略
jpa主键生成策略1 @GeneratedValue这个注解的作用就是标识实体的唯一主键,且提供主键生成策略。 有两个属性 strategy 和 generator generator属性是一个字符串,申明了主键生成器的名称 对应于同名的@SequenceGenerator 2 @TableGeneratorstrategy属性:提供四种值 123456789-AUTO 主键由程序控制, 是默认选项 ,不设置就是这个 -IDENTITY 主键由数据库生成, 采用数据库自增长, Oracle不支持这种方式 -SEQUENCE 通过数据库的序列产生主键, MYSQL 不支持 -Table 提供特定的数据库产生主键, 该方式更有利于数据库的移植如果希望主键有程序手动指定即在生成insert语句时,添加id这个字段。那么不设置 @GeneratedValue即可 3 @javax.persistence.SequenceGenerator如果实体标识的自动生策略是 GenerationType.TABLE,开发者需要为实体标识字段提供 TableGenerator...