Skip to content

Instantly share code, notes, and snippets.

View dadhi's full-sized avatar
🎯
Focusing

Maksim Volkau dadhi

🎯
Focusing
View GitHub Profile
@dadhi
dadhi / JsonParser.java
Created December 10, 2022 15:03
Java json parser with Jackson library
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonParserIterator {
public static void main(String[] args) throws IOException {
String json = "{ \"fx\": [{ \"pk\": \"ALL=\" }, { \"pk\": \"EUR=\" }] }";
ObjectMapper mapper = new ObjectMapper();
JsonNode root = mapper.readTree(json);
@dadhi
dadhi / fastest_way_to_emit_ctor_call_eg_opcodes_newobj.cs
Created July 26, 2022 11:33
Optimize ILGenerator.Emit(OpCodes.Newobj, ctor)
using System;
using System.Reflection.Emit;
using System.Diagnostics;
public class Program
{
public static void Main()
{
var con = typeof(B<int>).GetConstructors()[0];
@dadhi
dadhi / playground.rs
Last active July 20, 2022 11:02 — forked from rust-play/playground.rs
MaybeUninit and type_name implemented as AnyExt
#![allow(unused)]
fn main() {
use std::mem::{self, MaybeUninit};
let data = {
// Create an uninitialized array of `MaybeUninit`. The `assume_init` is
// safe because the type we are claiming to have initialized here is a
// bunch of `MaybeUninit`s, which do not require initialization.
let mut data: [MaybeUninit<Vec<u32>>; 1000] = unsafe {
MaybeUninit::uninit().assume_init()
@dadhi
dadhi / code.cs
Created July 16, 2022 19:25 — forked from hypeartist/code.cs
Type instantiation (.ctor with parameters)
object obj;
var r = 0;
const int cnt = 1000000;
var constructorInfo = typeof(Class).GetConstructor(new[] { typeof(int) })!;
var hCtor = constructorInfo.MethodHandle;
RuntimeHelpers.PrepareMethod(RuntimeMethodHandle.FromIntPtr(hCtor.Value));
var pCtor = (delegate* managed<object, int, void>)hCtor.GetFunctionPointer();
@dadhi
dadhi / Quic.cs
Created May 12, 2022 07:13 — forked from davidfowl/Quic.cs
using System.IO.Pipelines;
using System.Net;
using System.Net.Security;
using Microsoft.AspNetCore.Connections;
using Microsoft.AspNetCore.Connections.Features;
using Microsoft.AspNetCore.Http.Features;
using Microsoft.AspNetCore.Server.Kestrel.Core;
var builder = WebApplication.CreateBuilder(args);
graph TB
    A((1, 2))-->B((2))
    A-->C((3))
    A-->D((4))
    B-->E((5))
    B-->F((6))
    B-->G((7))
    C-->H((8))
 D--&gt;I((9))
@dadhi
dadhi / SpecializedFactoryExample.worksheet.sc
Last active February 23, 2022 13:28
Specialized factory type class in Scala
//live: https://scastie.scala-lang.org/dadhi/G2uzgCqXSbiav34bM602iw/68
trait EntryFactory[K] {
def create(key: K): Entry[K]
}
object EntryFactory {
implicit def anyFactory[K]: EntryFactory[K] =
new EntryFactory[K] {
override def create(key: K) = KEntry(key, key.hashCode)
@dadhi
dadhi / MinimalAPIs.md
Created September 11, 2021 07:20 — forked from davidfowl/MinimalAPIs.md
Minimal APIs at a glance

Minimal APIs

WebApplication

Creating an application

var app = WebApplication.Create(args);

app.MapGet("/", () =&gt; "Hello World");
@dadhi
dadhi / latency.txt
Created April 14, 2021 11:18 — forked from jboner/latency.txt
Latency Numbers Every Programmer Should Know
Latency Comparison Numbers (~2012)
----------------------------------
L1 cache reference 0.5 ns
Branch mispredict 5 ns
L2 cache reference 7 ns 14x L1 cache
Mutex lock/unlock 25 ns
Main memory reference 100 ns 20x L2 cache, 200x L1 cache
Compress 1K bytes with Zippy 3,000 ns 3 us
Send 1K bytes over 1 Gbps network 10,000 ns 10 us
Read 4K randomly from SSD* 150,000 ns 150 us ~1GB/sec SSD
@dadhi
dadhi / PackRef.md
Created November 23, 2020 20:47
Control PackageReference

NuGet/Home#5986 (comment)

I've found that you can manually control which .dlls to reference and which .dlls to copy to output from a NuGet package if you turn off all assets on the PackageReference:

<PackageReference Include="Foo.MyPackage" Version="1.0.0" ExcludeAssets="all" GeneratePathProperty="true" />

and then manually reference the .dlls you need: