c# pkcs8-编程思维
背景 C#项目要携带用户信息,通过JWT, 跳转到Java项目。为了验证Token,所以用于签名的key和算法必须一致。 Java项目JWT的实现 String secret = "PKCS8 encode private key"; PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(Base64.getDecoder().decode(
morethink program
背景 C#项目要携带用户信息,通过JWT, 跳转到Java项目。为了验证Token,所以用于签名的key和算法必须一致。 Java项目JWT的实现 String secret = "PKCS8 encode private key"; PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(Base64.getDecoder().decode(
背景 项目早期底层方法捕获了能考虑到的业务异常,但即便如此,生产环境还是会产生各种难以预料的结果,所以在上层调用的时候,这些异常就进入了Exception中,返回到UI上就是“System error” try { } catch(bizException1 | bizException2) { } catch(Exception) { //log //return "System
代码 public class SamlUtil { private static SamlUtil samlUtil; private static final Object lock = new Object(); private SamlUtil() { } public static SamlUtil getInstance() { SamlUti
背景 如题 原理 和对接其他平台一样,在开始之前我们要向调用的服务方申请一些东西,以便后面开展工作,比如,下图就是微信公众平台开发时候需要进行的操作: 我们的开发也是一样,也需要这样的前期准备。 这个过程可能是通过线上填写信息,也可能发个邮件加个附件,也可以是线下找对应的人员沟通。 总之,目的就是:交换信息。 交换信息的目的就是后面流程使用 准备 我所在的项目是通过发送XML文件给IdP的
两个网络 如下拓扑,aaaa代表mac地址,.10代表ip地址,123代表端口 发送过程 假如我们想把一个数据从A发D 0.一切开始之前,因为这个网络拓扑,所以在网络就绪之初,路由器拿出小本本在路由表记录下: eth1 11.11.11.0/24 eth2 22.22.22.0/24 首先,A要给D发包,A是知道D的IP地址的 A构建一个数据 DATA L3 SRC:11.11
Fake Fakes are objects that have working implementations, but not same as production one. Usually they take some shortcut and have simplified version of production code. Stub Stub is an object tha
代码 public static void main(String[] args) { final ExecutorService executorService = new ThreadPoolExecutor(1, 1, 0, TimeUnit.SECONDS,new LinkedBlockingQueue<>()); Future<?>
背景 请求某ldap服务时候出错,错误如下: ConnectionTimeout异常,telenet测试 telnet hostname 389 大概需要很久(约2分钟)才能通。 所以想的是设置请求的ConnectionTimeout值大一些试试 代码 增加超时配置 env.put("com.sun.jndi.ldap.connect.timeout", "10000"); 来源:http
三种方式的演化 Thread构造方法如下 public Thread(Runnable target) { init(null, target, "Thread-" + nextThreadNum(), 0); } Runnable 是一个接口 @FunctionalInterface public interface Runnable { public abstrac
背景 项目使用VMware vSphere 在软件升级前进行snapshot。 问题 java.rmi.RemoteException: VI SDK invoke exception:org.dom4j.DocumentException: Error on line 1 of document : Content is not allowed in prolog. Nested exce
背景 服务器是Windows server 2012 R2, 之前扫出安全问题,并提供解决方案 TLS/SSL Server Is Using Commonly Used Prime Numbers The server is using a common or default prime number as a parameter during the Diffie-Hellman key
下载JDBC Driver 目前最新版本是v9.4 值得一提的是从v6.4开始,连接字符串增加属性SSLProtocol,可以指定TLS版本(https://github.com/Microsoft/mssql-jdbc/wiki/SSLProtocol) https://docs.microsoft.com/en-us/sql/connect/jdbc/release-notes-for-th
写在代码里 System.setPropety("javax.net.debug","all") value值可以设置all、true、ssl 具体可以参考这里:https://www.ibm.com/docs/en/sdk-java-technology/7.1?topic=troubleshooting-debugging-utilities 写在启动配置中 在VSCode 的launch
代码 @Controller public class HomeController { @Autowired private LoginAction loginAction; @RequestMapping(value="/view", method=RequestMethod.GET) public ModelAndView display(HttpServ
背景 项目使用的就是SpringBoot默认的结构,我看了下,依赖注入使用了最不推荐的字段注入。 字段注入 为了保持项目风格统一,省的有些理论派挑刺,还是延续字段注入的操作。 某个业务场景下,有一个抽象的父类和多个具体的子类,子类中需要用到父类注入的对象。 当即有人就说,这么写: public abstract class AbstractClass{ @Autowired pr
Assert是什么? 断言(Assertion)是一种调试程序的方式。 C#中的Assert In a debug compilation, Assert takes in a Boolean condition as a parameter, and shows the error dialog if the condition is false. The program proceeds
代码 我们以Request类为例,以下是部分代码: public final class Request { private final HttpUrl url; private final String method; private final Headers headers; private final RequestBody body; private final O
需求例子 比如我们使用java+Selenium编写页面自动化测试的功能。 现在有个登录页面。 1. It works public class Login { public void testLogin() { // fill login data on sign-in page driver.findElement(By.name("user_name")).sendKe
项目分层(阿里巴巴Java开发手册推荐) Gradle项目 在APP project的build.gradle中配置依赖其他project,执行task会输出到build文件夹 默认debug的时候会创建launch.json { "version": "0.2.0", "configurations": [ { "type": "j
问题 有一个模块,提供两种方式导入数据,导入的过程是异步的。API处有校验,当有数据正在处理的时候,不能再导入,比如等待前一个导入结束。 我们针对这两种方式进行测试,当两个Test跑起来的时候,后面的case则无法通过test,因为前面的case创建了导入,导入状态还是In Process。 dependsOnMethods 所以,我们的要求就是,这两个case必须一个完成了才能进行下一个。很容