编程技术
文章平均质量分 78
主要是记录一些编程的基本技术和技能
冉椿林博客
懂得自己无知,说明已有收获!
展开
-
年会快到了,教你3分钟搞一个高大上的3D抽奖!
前言网上大佬又双叒开源了一个抽奖项目,分分钟就可以看到效果,特分享安利一波 ~I、先看效果吧!5倍速度播放:II、3分钟搞定!1、安装Node.js下载并安装即可。Windows X64下载地址:https://nodejs.org/dist/v14.15.4/node-v14.15.4-x64.msi注意:在Windows上安装时务必选择全部组件,包括勾选Add to Path。2、程序下载下载地址:https://gitee.com/neequ_admin/lotte.原创 2021-01-18 20:55:05 · 4563 阅读 · 1 评论 -
【神器出炉】微信/QQ/TIM,如何查看对方撤回的消息?
Ⅰ、对方撤回消息看不到???你是否经常遇到朋友发了消息又撤回的情况?感觉错过了一个亿?想要知道撤回了啥,怎么办??别慌,这样的工具又双叒叕地来了!!!Ⅱ、RevokeMsgPatcher这个工具叫做RevokeMsgPatcher,一个GitHub叫做辉鸭蛋的老哥开发而来。话不多说,讲讲怎么操作吧!该工具只能适用于Windows平台的PC微信、QQ和TIM,手机版APP是做不到的!Tips:如果你的手机和电脑同时在线,就算你们是通过手机进行聊天,对方撤回了消息,电脑上仍然可以看到。so原创 2021-01-06 10:32:34 · 20577 阅读 · 9 评论 -
如何避免回表查询?什么是索引覆盖? | 1分钟MySQL优化系列
《tail》留了一个尾巴:select id,name where name='shenjian'select id,name,sex where name='shenjian'多查询了一个属性,为何检索过程完全不同?什么是回表查询?什么是索引覆盖?如何实现索引覆盖?哪些场景,可以利用索引覆盖来优化SQL?这些,这是今天要分享的内容。画外音:本文试验基于MySQL5.6-......转载 2019-08-13 09:21:25 · 1437 阅读 · 1 评论 -
一张时序图看懂:脏读、不可重复读
[必读] 共享锁与排他锁首先说明:数据库的增删改操作默认都会加排他锁,而查询不会加任何锁。共享锁对某一资源加共享锁,自身可以读该资源,其他人也可以读该资源(也可以再继续加共享锁,即 共享锁可多个共存),但无法修改。要想修改就必须等所有共享锁都释放完之后。语法为:select * from table lock in share mode排他锁对某一资源加排他锁,自身可以进......原创 2020-02-23 17:06:40 · 735 阅读 · 0 评论 -
浅谈Mysql共享锁、排他锁、悲观锁、乐观锁及其使用场景
Mysql共享锁、排他锁、悲观锁、乐观锁及其使用场景一、相关名词|--表级锁(锁定整个表)|--页级锁(锁定一页)|--行级锁(锁定一行)|--共享锁(S锁,MyISAM 叫做读锁)|--排他锁(X锁,MyISAM 叫做写锁)|--悲观锁(抽象性,不真实存在这个锁)|--乐观锁(抽象性,不真实存在这个锁)二、InnoDB与MyISAMMysql 在5....原创 2017-12-05 15:15:55 · 45443 阅读 · 46 评论 -
低权用户调用高权用户创建的存储过程出错:noAccessToProcedureBodies
低权用户调用高权用户创建的存储过程出错首先,一般情况应该在服务器为数据库建立一个单独的账号,以用于管理数据库,并且该用户权限应被严格控制。而在登录SQL数据库时,应使用创建的单独账号进行数据库一些DLL定义,如建立触发器、函数、存储过程。尤其是存储过程,因为如果是root等高权限用户建立的存储过程,低权用户访问可能出现:【Userdoes not have access原创 2017-10-08 00:19:57 · 2511 阅读 · 0 评论 -
一次使用MAT进行线上内存泄漏问题排查经历
一、背景首先,发现线上某分析应用出现异常,连续好几天,一直没有分析数据产出。故登陆到线上查看error.log日志,发现:明显是 YCYX-Task 这个线程出现了内存溢出,导致程序假死。 同时查看当前应用内存占用已达到4G:二、排查历程1、初步定位jinfo首先,我们使用jinfo pid查看当前jvm的堆相关参数:可见,最大堆容量为:4G。jstat接下来,我们使用命令js...原创 2019-11-24 14:56:35 · 1628 阅读 · 0 评论 -
【网上的都不靠谱?还是得改源码】用Javasisst的字节码插桩技术,彻底解决Gson在转Map时,Int变成double问题
一、探究原由首先申明一下,我们要解决的问题有两个:Json串转Map时,Int变double问题Json串转对象时,对象属性中的Map,Int变double问题然后,我们来了解一下,Gson实现Json反序列化的源码:Gson内部会维护一个类型适配器集合,里面大概有十多个内置的TypeAdapter。涵盖了八大基本类型的TypeAdapter,并且还有一个ObjectTypeAda...原创 2019-03-28 13:48:11 · 797 阅读 · 0 评论 -
解决VisualVm的Profiler一直转圈:正在连接到目标 VM...
解决办法启动时带上:-J-Dorg.netbeans.profiler.separateConsole=true //-J即表示JVM OPTION:允许带JVM参数启动即可解决!附:带PID方式启动VisualVM方法:jps -m //先查到你的进程pidjvisualvm --openpid 25454 //注意,该方式启动,界面没有profiler功能...原创 2018-12-05 13:23:47 · 3735 阅读 · 0 评论 -
WebSocket与Tomcat兼容问题
Tomcat7.0.47及以上与之下的有区别、与Tomcat8又有区别1.WebSocket与7.0.47以下使用tomcat自带catalina.jar与tomcat-coyote.jar通过继承catalina.jar中的WebSocketServlet类作为serverlet拦截前台ws协议的请求,在其createWebSocketInbound(String arg0)方法原创 2017-10-08 04:35:35 · 26546 阅读 · 1 评论 -
svn sqlite[S11]: database disk image is malformed 终极解决方案
svn sqlite[S11]: database disk image is malformed问题解决 1. 将sqlite3.exe文件解压缩到.svn目录的同级目录 2. 打开cmd,切换到.svn的同级目录 3. 执行命令: sqlite3.exe .svn/wc.db "reindex nodes"原创 2017-10-07 16:34:21 · 10554 阅读 · 4 评论 -
mysql空闲等待时间导致的问题的解决方案
一、问题出现原因 show global variables like '%wait_timeout'; 可以查看数据库空闲等待时间,默认8小时,最大2147483,接近24天,即某程序连接数据库,若超过该时间,则会断开连接,可能出现1.com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: Connection.clo...原创 2016-09-08 21:10:30 · 5537 阅读 · 0 评论 -
我的解决org.apache.commons.lang.xwork.StringUtils异常的方法
网上解决org.apache.commons.lang.xwork.StringUtils异常的方法都弱爆了,看我怎么解决它! 今夜,晴,时间,凌晨两点 本码农在敲代码时遇到一个问题,就是页面用Ajax传输json数据到后台时,Struts框架使用json-default,在调用模型后返回到页面时,页面原创 2016-06-01 15:41:27 · 993 阅读 · 0 评论 -
关于JAVA中文乱码(1)
关于JAVA中文乱码的一些看法 编程,让人无语的就是,业务逻辑都写好了,什么都弄好了,但是乱码出现了。研究乱码的这一段时间,让我也有了一点点对处理乱码的心得。现在,我来说说我对乱码的看法。 例子:假使前台--jsp(utf-8)后台-servlet 如果@=post:doPost(...){System.out.println(request.g原创 2016-06-01 15:39:02 · 2691 阅读 · 0 评论 -
Java如何连接多实例SQL Server?
Java如何连接多实例SQL Server? Java连接SQL Server一般字符串:jdbc:sqlserver://127.0.0.1:1433;DatabaseName=数据库名;一般抛出的错误: Exception1: 无法打开登录所请求的数据库 "数据库名"。登录失败。【一般不会报这个错误,除非你多个实例都打开了】 Exception2原创 2016-06-01 15:31:40 · 7647 阅读 · 6 评论 -
为什么arrayList.removeAll(set)的速度远高于arrayList.removeAll(list)?
1、引言我们知道,对于集合(Collection)都有一个抽象方法removeAll(Collection<?> c)!但是你可知道,在集合数据比较多的情况下, ArrayList.removeAll(Set)的速度远远高于ArrayList.removeAll(List)!我简单测试了一下,从1百万数据中remove掉30万原创 2018-12-29 11:41:45 · 1447 阅读 · 0 评论 -
工具分享(4):用Swing写了一个Class编辑器—“ClassEditor”
一、它是什么?顾名思义,它是一个用来编辑字节码的简单的小工具。二、它能干嘛?字节码编辑器?据我所知,修改字节码相当麻烦。一般情况下,我们需要:将 jar 包用 JD-GUI 等工具,将所有 Class 文件全部反编译成 Java 文件;外网安装 Idea,将该Java项目拖到 Idea;解决各种 Maven 依赖,但有些依赖在内网 Maven 仓库(common-parent.pom...原创 2019-04-17 15:43:13 · 2608 阅读 · 1 评论 -
工具分享(3):使用Java Swing开发圆形/椭圆公章、私章图片(内附源码)
1、迎合你的需求当你需要一些定制内容的公章或私章图片,刚好你又懂点Java基础知识,那么你可以使用这个工具。2、生成的效果图一览2.1 公章效果图圆形公章:椭圆公章:2.2 私章效果图3.使用方法import cn.localhost01.seal.SealUtil;import cn.localhost01.seal.configuration.Se......原创 2018-11-12 14:33:36 · 5416 阅读 · 6 评论 -
微服务架构方案-ZeroC IceGrid
title: 微服务架构方案-ZeroC IceGridtags: [Ice,SpringCloud,Dubbo,Python,Java,gRPC]categories:框架技术date: 2018-11-07 00:02:25前言在聊ICE之前,我们说说目前主流的几个微服务架构方案。Spring Boot/Cloud由于 Spring 社区的影响力和 Netflix 的背...原创 2018-11-07 00:14:23 · 7639 阅读 · 3 评论 -
【小坑】Struts注意的几点
Struts继承的ActionSupport需注意1.继承com.opensymphony.xwork2.ActionSupport会使写Action更方便,需要引入commons-logging-1.0.4.jar继承后会出现常量:SUCCESS=“success”NONE=“none”ERROR=“error”INPUT=“input”LOGIN=“logi原创 2017-10-08 04:49:44 · 785 阅读 · 0 评论 -
HibernateTempalate与schema="dbo"导致的SQL错误问题
HibernateTempalate与schema="dbo"导致的SQL错误问题一般的Hibernate对象映射文件:"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">该配置文件在单hibernate存在的情况下执行sql语句原创 2017-10-08 03:45:36 · 1024 阅读 · 0 评论 -
Hibernate二级缓存适用场景
Hibernate二级缓存适用场景1.什么样的数据适合存放到第二级缓存中? 1) 很少被后台修改的数据,这里指的是前台后台使用了不同的orm实现,如一个用的hibernate加二级缓存,一个用的jdbc(前台用户可以修改,修改后会同步到缓存中)2) 不是很重要的数据,允许出现偶尔并发的数据 3) 访问量大,不会被并发访问的数据,如个人资料 4)原创 2017-10-08 03:24:13 · 1264 阅读 · 0 评论 -
使用Ftp上传下载文件-Java版
使用Ftp上传下载文件-Java版package com.xxxx.utils;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOExcepti原创 2017-10-08 00:15:02 · 782 阅读 · 0 评论 -
Spring两大依赖注入的注入时间
Spring两大依赖注入的注入时间 如果注入类有构造方法,那么Spring赋值注入是在类实例化之后完成,即先调用构造方法完成类实例化,再进行值注入。下面具体介绍: applicationcontext.xml里: jdbc:mysql://localhost:3306/test原创 2016-06-01 15:34:02 · 8765 阅读 · 0 评论 -
对称加密算法AES联合设备IMEI码设计的加密机制
对称加密算法 AES联合设备IMEI码设计的加密机制 1.AES算法介绍 * 对称加密算法 AES,密码学中的高级加密标准(Advanced Encryption Standard,AES),又称高级加密标准Rijndael加密法,是美国联邦政府采用的一种区块加密标准。 *这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家原创 2016-06-01 15:24:28 · 1929 阅读 · 0 评论 -
Switch的内心世界
为什么要写这篇文章?今儿写代码时,一位前辈看到了我满篇的if+else if,他告诉我说:尽量使用switch来代替if+else if,if+else if效率比switch低,会增加无用的判断!年轻的我差点就信了!那么switch和if+else if的效率问题真的就如他所言?对我来说,这真的是个很有趣的问题!同时我也想要知道,在我们实际开发中,什么时候用switch,什么时候用if+else if合适呢?再后来,就引发了我更多的思考,switch它到底拿着我的判断条件是怎么操作的?人年纪大转载 2020-07-31 18:21:53 · 435 阅读 · 0 评论 -
【正则助我,事半功倍】好用的几个正则
1、时间串转时间var str = "20170818102656"; //这种时间串,有时总能遇到。还可能是其他的,如2017.08.18 10:26:56str = str.replace(/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/g,"$1/$2/$3 $4:$5:$6");var date = new Date(str); 2、恶心...原创 2019-03-26 15:02:36 · 656 阅读 · 0 评论 -
【面试必读】求你们不要再问我Java中的锁及优化了?
一、Java线程阻塞的代价Java的线程是映射到操作系统原生线程之上的。如果要阻塞或唤醒一个线程就需要操作系统介入,需要在户态与核心态之间切换,这种切换会消耗大量的系统资源,因为用户态与内核态都有各自专用的内存空间,专用的寄存器等,用户态切换至内核态需要传递给许多变量、参数给内核,内核也需要保护好用户态在切换时的一些寄存器值、变量等(保护现场),以便内核态调用结束后切换回用户态继续工作。二、J...转载 2019-03-17 22:51:45 · 702 阅读 · 0 评论 -
分布式锁之Redis:正确的实现方式
一、前言分布式锁一般有三种实现方式:数据库乐观锁;基于Redis的分布式锁;基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细介绍如何正确地实现Redis分布式锁。二、可靠性首先,为了确保分布式锁可用,我们至少要确保锁的实现...转载 2018-12-05 10:57:10 · 327 阅读 · 0 评论 -
程序员与笛卡尔积
SQL与笛卡尔积首先,先简单解释一下笛卡尔积。现在,我们有两个集合A和B。A = {0,1} B = {2,3,4}集合 A×B 和 B×A的结果集就可以分别表示为以下这种形式:A×B = {(0,2),(1,2),(0,3),(1,3),(0,4),(1,4)};B×A = {(2,0),(2,1),(3,0),(3,1),(4,0),(4,1)};以上A×B和B×A...转载 2018-11-23 18:47:58 · 2580 阅读 · 0 评论 -
浅谈JPA三:开始使用Spring-Data-JPA
抛砖引玉先看一段常用配置文件,看看使用Spring-Data-JPA需要使用到哪些东西吧!<?xml version="1.0" encoding="UTF-8&a原创 2018-10-27 01:04:37 · 559 阅读 · 0 评论 -
浅谈JPA二:JPA与Hibernate关系
JPA & Hibernate 关系JPA是需要Provider来实现其功能的,Hibernate就是JPA Provider中很强的一个。从功能上来说,JPA现在就是Hibernate功能的一个子集。可以简单的理解为JPA是标准接口,Hibernate是实现及扩展。Hibernate主要是通过三个组件来实现:hibernate-annotation、hibernate-entity......原创 2018-10-27 01:03:09 · 1372 阅读 · 0 评论 -
浅谈JPA一:JPA是什么?
定义JPA 即Java Persistence API。JPA 是一个基于O/R映射的标准规范(目前最新版本是JPA 2.1 )。所谓规范即只定义标准规则(如注解、接口),不提供实现,软件提供商可以按照标准规范来实现,而使用者只需按照规范中定义的方式来使用,而不用和软件提供商的实现打交道。JPA的出现有两个原因:简化现有Java EE和Java SE应用的对象持久化的开发工作;Sun希......原创 2018-10-27 01:02:18 · 50955 阅读 · 5 评论 -
浅谈NIO与零拷贝
传统IO传统IO的数据拷贝流程如下图:数据需要从磁盘拷贝到内核空间,再从内核空间拷到用户空间(JVM)。程序可能进行数据修改等操作再将数据拷贝到内核空间,内核空间再拷贝到网卡内存,通过网络发送出去(或拷贝到磁盘)。即数据的读写(这里用户空间发到网络也算作写),都至少需要两次拷贝。当然磁盘到内核空间属于DMA拷贝(DMA即直接内存存取,原理是外部设备不通过CPU而直接与系统内存交换......原创 2018-10-27 00:59:35 · 8366 阅读 · 8 评论 -
Java字符串分割性能比较
java字符串分割性能比较关于字符串的分割,我用jdk的split、apache的common的split、正则表达式、StringTokenizerr以及substring做了以下比较,比较的时间为纳秒,用一个字符串“192.168.20.121”作为示例,打印时间为:使用jdk的split切分字符串192 168 20 121 花费时间1086171使用common的spli...转载 2018-09-21 10:21:32 · 1041 阅读 · 0 评论 -
html5视频播放解决方案
html5视频播放解决方案html5没学习之前总觉的很神秘。近期通过学习和研究html5有点成果,特总结分享给大家。众所周知应用开发分两种:一是原生的native app 二是web app,也就是通过浏览器访问的应用。html5在移动互联时代,有他独到的用武之地,虽然他有很多优势但不可能完全彻底取代原生APP,原生APP开发成本虽高,但是其良好的用户体验以及API、已有的转载 2017-12-20 18:38:09 · 14507 阅读 · 3 评论 -
【工具】使用反射为类快速生成toString方法
使用反射为类快速生成toString方法为所处位置类打印出相应toString方法public static void main(String[] args) throws ClassNotFoundException { // 静态方法获取当前类名 String classPath = new Object() { public String getClassNa原创 2017-10-08 05:06:07 · 2007 阅读 · 0 评论 -
Volatile关键字与线程安全
volatile和多线程资源访问控制分别介绍一、volatile关键字:volatile关键字,它的语义有二:1.volatile修饰的变量对于其他线程具有立即可见性,即该值发生变化时,其他线程可以立马知道。而普通变量,值发生变化后,需要经过store、write将变量从当前线程的工作副本写入主内存,其他线程再从主内存通过read、load将变量同步到自己的工作内存,由于时原创 2017-10-08 04:18:47 · 15803 阅读 · 0 评论 -
【注意】Java序列化serialVersionUID问题
Java序列化serialVersionUID问题当没有显式地定义serialVersionUID变量时,Java序列化机制会根据编译的class(它通过类名,方法名等诸多因素经过计算而得,理论上是一一映射的关系,也就是唯一的)自动生成一个serialVersionUID作序列化版本比较用,这种情况下,如果class文件(类名,方法名等)没有发生变化(增加空格,换行,增加注释,等等),就算原创 2017-10-08 04:09:36 · 1433 阅读 · 0 评论 -
Asp.Net的PostBack
Asp.Net的PostBack在Asp.Net中,譬如dropdownlist,它含有AutoPostback属性。当设置为true,则选择值改变时自动回发到后台cs对应代码里。然而,button控件不含有这个属性,而是只要给他一个点击事件:onclick="btnopen_Click"(btnopen_Click是后台的cs代码,不是JS代码),那么每次点击就完成一次回发。回发原理:原创 2017-10-08 03:16:11 · 837 阅读 · 0 评论