`
文章列表
Executors 目前提供了 5 种不同的线程池创建配置: newCachedThreadPool(),它是一种用来处理大量短时间工作任务的线程池,具有几个鲜明特点:它会试图缓存线程并重用,当无缓存线程可用时,就会创建新的工作线程;如果线程闲置 ...
   最近工作的一个项目中需要调用第三方提供的API获取数据,该API接口采用的授权方式是OAuth2,授权类型采用client_crdentials。鉴于Spring框架完善的生态系统我们直接采用了spring-security-oauth2 框架中提供的OAuth2客户端能力。现将使用框架过程中遇到的几个问题记录,供以后参考,以希望其他开发的同学能够避免踩坑。 (1)关于security.oauth2.client.*几个相关配置项容易混淆     .security.oauth2.client.authentication-scheme        这个配置项主要指定访问API时传输 ...
     Spring boot 参考手册——第31章缓存阅读笔记和注意点 基于Spring boot 1.5.19.RELEASE版本 码字不易,转载请注明出处 一、阅读笔记 1. Spring boot 只是在Spring框架提供的缓存抽象能力之上为我们做了一些自动配置的工作, 本质上Spring框架也并不提供缓存存储能力,只是提供了核心的抽像层接口Cache和CacheManager,方便集成第三方缓存提供商。 Spring Boot auto-configures the cache infrastructure as long as the caching support is e ...
总结一下项目中经常使用的MySQL SQL优化最佳实践 1.IN查询包含的值不应过多 建议最多不超过5个,虽然MySQL对于IN做了相应的优化——IN中的常量全部存储在一个数组里面,并对这个数组进行排好序。但是如果数值较多,产生的消耗也是比较大的。 对于in(1,2,3) 这样连续的数值,可以使用between或者使用连接来替换。 2. SELECT语句务必指明字段名称 3. 当只需要一条数据的时候,使用limit 1 这样可以使得EXPLAIN中的type列达到const类型 4. 如果排序字段没有用到索引,就尽量少排序 5. 如果限制条件中其他字段没有索引,尽量少用or 很多时候使用 u ...
减少使用swap的概率 由参数 vm.swappiness 决定Linux是倾向于使用swap,还是倾向于释放文件系统cache。参数值越小可减少使用swap的概率,但不能避免Linux使用swap。建议配置为vm.swappiness = 0; 在配置文件/etc/sysctl.conf中配置。 IO调度策略设置为deadline [root@bigdata01 ~]# echo deadline>/sys/block/sda/queue/scheduler [root@bigdata01 ~]# cat /sys/block/sda/queue/scheduler noop anti ...
并发同步synchronized 关键字 VS ReentrantLock 相同点 都实现了多线程同步和JVM内存可见性语义 都是可重入锁 不同点 机制不同 synchronized通过java对象头锁标记和Monitor对象实现,并通过JVM内存模型保证包含共享变量的多线程内存可见性。Reentrantlock通过CAS、AQS(AbstractQueuedSynchronizer)和 locksupport实现,依赖ASQ的volatile state保证包含共享变量的多线程内存可见性。 用法不同 synchronized可以修饰实例方法、静态方法、代码块; Reentran ...
缓存是一种提高系统读性能的常见技术,对于读多写少的应用场景,我们经常使用缓存来进行优化。 那么问题来了,当数据发生变化的时候: (1)是更新缓存中的数据,还是淘汰缓存中的数据呢? (2)是先操纵数据库中的数据再操纵缓存中的数据,还是先操纵缓存中的数据再操纵数据库中的数据呢? (3)缓存与数据库的操作,在架构上是否有优化的空间呢? 这是本文关注的三个核心问题。 更新缓存 数据不但写入数据库,还会写入缓存;更新缓存的优点:缓存不会增加一次miss,命中率高 淘汰缓存 数据只会写入数据库,不会写入缓存,只会把数据淘汰掉;淘汰缓存的优点:简单 选择更新缓存还是淘汰缓存 主要取决于更新缓存的复杂度, ...
  注意:这只是一个相对通用的计算规则   对于中小型数据库,我们在分配内存的时候有一个相对通用的计算规则,用于说明sga,pga物理内存在这三者之间的关系: 如果是oltp型数据库, sga=(总的物理内存-操作系统使用内存)*70%*80%,                    pga=sga*(10%~20%) 如果是olap型数据库, sga=总的物理内存-操作系统使用内存)*60%*80%,                    pga=sga*(45%~65%) 当然对于32 bit的操作系统平台,默认情形下sga最大可用内存有1.7GB的限制。
将自己学习中遇到的疑难Linux术语,记录在册,以备以后查录 1.什么是PPC PPC= PowerPC 就是IBM,Apple等机器用的CPU。 2.什么是LSB LSB=  Linux Standard Base lsb_release 命令用来查看当前系统的发行版信息 有些系统上不一定安装了这个命令,可以通过命令cat /etc/issue文件得到发行版信息。 lsb_release -v ,查看LSB本身的版本信息 lsb_release -a ,打印本系统发行版的所有信息,比如发行版的ID,描述信息,具体版本,代号。 lsb_release -d -s , 查看发行版的描述信息 3. ...
Threadlocals are used in J2EE application servers to keep track of transaction context and security context. I was thinking of using it to pass execution context (which involves some user login and other context information) around in web application which involves servlets and other server side clas ...
单机 # docker获取consul并创建容器的步骤 # docker pull consul # docker run --name consul -d -p 8500:8500 -p 8600:8600/udp consul 集群 # 建立consul集群命令步骤 # 建立第一个容器,并启动第一个consul服务     # docker run --name consul1 -d -p 8500:8500 -p 8300:8300 -p 8301:8301 -p 8302:8302 -p 8600:8600 consul agent -server -bootstrap-expect ...
             Architecting Multi-Tenancy 参考 https://www.heroku.com/podcasts/codeish/41-architecting-multi-tenancy
                           10条如何正确使用日志的技巧 参见原文 http://nurkiewicz.blogspot.com/2010/05/clean-code-clean-logs-use-appropriate.html
JVM里面有一个跟踪classload的参数: -XX:+TraceClassLoading 加上这个参数JAVA_OPTS=$JAVA_OPTS" "-XX:+TraceClassLoading ,然后把标准输出重定向到一个临时日志文件,在这个文件中查看编译classpath使用的jar包是否和运行时的版本不一致
                        以下文章记录Mybatis Plus的一些高级用法,这些知识包括如何扩展一些Mybatis Plus提供的接口。   1. 自动填充      实现MetaObjectHandler接口的insertFill(......)和updateFill(......)方法      填充优化   2. 乐观锁       防止更新冲突,通常采用一个版本号字段,在Mybatis Plus的的实现中通过添加插件   OptimisticLockerInterceptor 的配置BEAN。同时在实体类中表示版本的字段上加上@Version   注解。   ...
Global site tag (gtag.js) - Google Analytics